#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

#include "estoque.h"

static int contcli = 0;

void cadastrarCliente();
void consutarCliente();
void excluirCliente(); 
void mostraCliente(int i);
int  pesquisarCliente(char *str, struct clientes src[]);
void trocarCliente(int origem, int destino);
void ordernarNome(int cnt, struct clientes *ord);

void cadastrarCliente(){     
     int vq;
     do {
         clrscr();
         vq = validaqtd(contcli);
         if ( vq ) {
             clrscr();
             printf("\n\n- Cadastro de Cliente: \n");
             c[contcli].codigo = contcli + 1;
             printf("\tCodigo...: %0.5d", c[contcli].codigo);
             printf("\tNome.....: ");
             scanf("%s", &c[contcli].nome);
             contcli++;
         }
         else 
             printf("\n\n\t\tArray completo!\n");
     } while ( vq && questiona("\n\n\t\t\t- Deseja cadastrar outro ? [SN]   ") );
}

void consutarCliente(){
     int i;
     clrscr();
     ordernarNome(contcli, c);
     if (contcli == 0)
        printf("\nBanco de dados vazio!");
     else {
          printf("RELACAO DE CLIENTES\n");
          printf("%-20s %s\n", "Nome", "Codigo");
     
          for (i = 0; i < contcli; i++) {
              printf("%-20s %0.5d\n", c[i].nome, c[i].codigo);
              
              if ((i + 1) % 19 == 0){
                 printf("%60s", "\n[ENTER] - Continua...");
                 pause();
                 clrscr();
              }
          }
     }
     
     pause();
}

void trocarCliente(int origem, int destino) {     
     struct clientes aux;
     
     aux.codigo = c[destino].codigo;
     strcpy(aux.nome, c[destino].nome);
     
     c[destino].codigo = c[origem].codigo;
     strcpy(c[destino].nome, c[origem].nome);

     c[origem].codigo  = aux.codigo;
     strcpy(c[origem].nome, aux.nome);
}

void excluirCliente(){
     int i;
     char nm[SZTXT], sn;
     clrscr();
     
     solicita("Cliente: ", nm);
     
     i = clientePesquisar(nm, c);
     if (i == -1) {
        printf("\n Nao encontrado!\n");
        pause();
     }
     else {
          mostraCliente(i);
          printf("\n\n\t Deseja excluir ? [SN]");
          getchar();
          scanf("%c", &sn);
          
          if (sn == 's' || sn == 'S') {
             trocarCliente(i, contcli - 1);
             contcli--;
          }
     }
} 

int clientePesquisar(char *str, struct clientes src[]){
    int i, r = -1;
    for (i = 0; i < MAX; i++) 
        if ( strcmp( str, src[i].nome) == 0 ) {
           r = i;
           break;
        }
    return r;
}

void mostraCliente(int i) {
             printf("\tCodigo...: %0.5d", c[i].codigo);
             printf("\tNome.....: %s"   , c[i].nome  );
}

//void ordernarNome(int cnt, struct clientes ord[]) {
void ordernarNome(int cnt, struct clientes *ord) {
     int i, j;
     for ( i = 0; i < cnt - 1; i++ )
         for ( j = cnt - 1; j >= i; j++ ) {
             // if (strcmp( ord[j - 1].nome, ord[j].nome) > 0) {
             if (strcmp( ord[j - 1].nome, ord[j].nome) > 0) {
                trocarCliente(j - 1, j);
             }
         }
}
